import os
import uuid
import logging

from app import app

# 配置日志记录器
logger = logging.getLogger(__name__)

class UploadService:
    # 上传图片
    @staticmethod
    def upload(files):
        # 检查请求中是否包含文件
        if 'file' not in files:
            return None
        # 获取上传的文件
        file = files['file']
        # 检查文件名是否为空
        if file.filename == '':
            return None
        if file:
            img_url = UploadService.upload_image(file)
            return img_url
        return None
    # 保存在本地
    @staticmethod
    def upload_image(file):
        # 生成一个唯一的文件名，使用UUID（Universally Unique Identifier）来确保文件名的唯一性
        file_name = str(uuid.uuid4())
        # 获取上传文件的扩展名，例如：.jpg, .png等
        file_ext = os.path.splitext(file.filename)[1]
        fold_name= 'app/static/images'
        if file_ext in ['.mp4','.webm','.avi','.mov']:
            fold_name = 'app/static/videos'
        # 检查目录是否存在，如果不存在则创建
        if not os.path.exists(fold_name):
            os.makedirs(fold_name)
        # 构建文件的保存路径，将文件名和扩展名拼接起来，并指定保存目录为'app/static/images'
        file_path = os.path.join(fold_name, file_name + file_ext)
        # 将上传的文件保存到指定的文件路径
        file.save(file_path)
        logger.info(f'图片保存到{file_path}下')
        # 返回文件的保存路径，以便后续使用
        return 'http://'+app.config['HOST']+':'+str(app.config['PORT'])+fold_name[3:]+'/' + file_name + file_ext
